    Help for JoyStk

Properties            Events            Frequently Asked Questions

Registration Information

Order Form

Getting Custom Controls Written

Licensing Information

Description

JoyStk gives joystick information (movement, buttons) for your programs. It supports two joysticks, one 4-button joystick or one 3-D joystick.

File Name

JOYSTK2.VBX, JOYSTK16.OCX, JOYSTK32.OCX

ActiveX / OCX Object Name

Mabry.JoyStkCtrl

ActiveX Compatility

VB 4.0 (32-bit) and 5.0

ActiveX Built With

Microsoft Visual C++ v4

ActiveX - Required DLLs

MFC40.DLL (October 6th, 1995 or later)

OLEPRO32.DLL  (October 6th, 1995 or later)

MSVCRT40.DLL  (September 29th, 1995 or later)

VBX Object Type

Joystick

VBX Compatibility

VB 2.0, 3.0 and 4.0 (16-bit)

VBX Built With

Microsoft Visual C++ v1.5

Remarks

JoyStk requires that a Windows joystick driver is installed.

When using JoyStk, be sure to set the Enabled property to True at run-time.  If this is not done, the control will not function.  Merely making sure that the Enabled property is True at design-time is not enough.  Also, you should ensure that Enabled is set to False prior to exiting.

Distribution Note    When you develop and distribute an application that uses this control, you should install the control file into the user's Windows SYSTEM directory.  The control file has version information built into it.  So, during installation, you should ensure that you are not overwriting a newer version.


JoyStk Properties

Properties that have special meaning for this control or that only apply to this control are marked with an asterisk (*).

Align Property

*Button1 Property

*Button2 Property

*Button3 Property

*Button4 Property

*Buttons Property

*Devices Property

Enabled Property

HelpContextID Property

hWnd Property

Index Property

Left Property

*Manufacturer Property

Name Property

*Period Property

*PeriodMax Property

*PeriodMin Property

*Port Property

*Product Property

*ProductName Property

Tag Property

*Threshold Property

Top Property

*Version Property

*XMax Property

*XMin Property

*XPos Property

*YMax Property

*YMin Property

*YPos Property

*ZMax Property

*ZMin Property

*ZPos Property


JoyStk Events

Events that have special meaning for this control or that only apply to this control are marked with an asterisk (*).

*ButtonDown Event

*ButtonUp Event

*Move Event


Frequently Asked Questions

General Questions

I would like to use the joystick port to get input from some buttons. How do I do this? I've tried just hooking up the bottons and nothing seems to work.


FAQ - I would like to use the joystick port to get input from some buttons. How do I do this? I've tried j
I would like to use the joystick port to get input from some buttons. How do I do this? I've tried just hooking up the bottons and nothing seems to work.

Frequently Asked Questions

Most joystick drivers are looking for a stick. Without something out there, the driver thinks that no joystick is present. The schematic below shows how to hook up four buttons to a joystick port. The basic design is simple. All that is required are four buttons, four 20k ohm resistors, a DB-15 male connector and some wire.


Registration Information

CREDITS

JoyStk was written by Zane Thomas.

CONTACT INFORMATION

Orders, inquiries, technical support, questions, comments, etc. can be sent to mabry@mabry.com on the Internet.  Our mailing address/contact information is:

Mabry Software, Inc.

Post Office Box 31926

Seattle, WA  98103-1926

Sales: 1-800-99-MABRY (U.S. Only)

Voice: 206-634-1443

Fax: 206-632-0272 or 206-364-3196

Web: http://www.mabry.com

COST

The price of JoyStk (control only) is US$15 (US$20 for International orders).  The cost of JoyStk and the C/C++ source code (of the control itself) is US$35 (US$40 for International orders).

Prices are subject to change without notice.

DELIVERY METHODS

We can ship this software to you via air mail and/or e-mail.

Air Mail - you will receive disks, a printed manual, and printed receipt if you choose this delivery method.  The costs are:

US$5.00 	US Priority Mail

US$10.00 	AirBorne Express 2nd Day (US deliveries only)

US$15.00 	AirBorne Express Overnight (US deliveries only)

US$45.00 	International AirBorne Express.

E-Mail - We can ship this package to you via e-mail.  You need to have an e-mail account that can accept large file attachments (which includes CompuServe, AOL, and most Internet providers).  If you choose this option, please note: a printed manual is not included.  We will, however, e-mail a receipt to you.

Be sure to include your full mailing address with your order.  Sometimes (on the Internet) the package cannot be e-mailed, so we are forced to send it through the normal mails.

CompuServe E-Mail - CompuServe members can use the software registration forum (GO SWREG) to register this package.  JoyStk's SWREG ID number is 1340.  The source code version's ID number is 1341.  PLEASE NOTE: When you order through SWREG, we send the registered package to your CompuServe account (not your Internet or AOL account) within a few hours.

ORDER / PAYMENT METHODS

You can order this software by phone, fax, e-mail, mail.  For your convenience, an order form has been provided that you can print out directly from this help file.

Please note that orders must include all information that is requested on our order form.   Your shipment WILL BE DELAYED if we have to contact you for additional information (such as phone number, street address, etc.).

You can pay by credit card (VISA, MasterCard, American Express), check (U.S. dollars drawn on a U.S. bank), cash, International Money Order, International Postal Order, Purchase Order (established business entities only - terms net 30), or wire transfer.

WIRE TRANSFER INFORMATION

Here is the information you need regarding our account for a wire funds transfer:

Bank Name: 	SeaFirst - Stone Way Branch

Bank Address: 	3601 Stone Way North

Seattle, WA  98103

Bank Phone: 	206-585-4951

Account Name: 	Mabry Software, Inc.

Routing Number: 	12000024

Account Number: 	16311706

If you are paying with a wire transfer of funds, please add US$12.50 to your order.  This is the fee that SeaFirst Bank charges Mabry Software.  Also, please ADD ANY ADDITIONAL FEES THAT YOUR BANK MAY CHARGE for wire transfer service. If you are paying with a  wire transfer, we must have full payment deposited to our account before we can ship your order.

Copyright © 1993-1997 by Mabry Software, Inc.


Order Form
 JoyStk Order Form

Use the Print Topic... command from the File menu to print this order form.

Mail this 	Mabry Software, Inc.

form to: 	Post Office Box 31926

Seattle, WA  98103-1926

Phone: 206-634-1443

Fax: 206-632-0272 or 206-364-3196

Internet: mabry@mabry.com

Web: www.mabry.com

Where did you get this copy of JoyStk?

____________________________________________________________________

Name: 	____________________________________________________________________

Ship to: 	____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

Phone: 	_________________________________________________________________

Fax: 	_________________________________________________________________

E-Mail: 	_________________________________________________________________

MC/VISA/AMEX: _________________________________________ exp. __________________

P.O. # (if any): 	____________________ Signature ____________________________________

qty ordered 	____ 	REGISTRATION
$15.00 ($20.00 international).  Check or money order in U.S. currency drawn on a U.S. bank.  Add $5.00 per order for shipping and handling.

qty ordered 	____ 	SOURCE CODE AND REGISTRATION
$35.00 ($40.00 international).  Check or money order in U.S. currency drawn on a U.S. bank.  Add $5.00 per order for shipping and handling.


Button Event Example

In this example, the labels show which buttons are down and which are up. To try this example, paste the code into the Declarations section of a form that contains two labels and a JoyStk control.  Press F5.

Sub Form_Load ()
    Joystick1.Enabled = True

    Call JoystickCheck
End Sub

Sub Form_Unload (Cancel As Integer)
    Joystick1.Enabled = False
End Sub

Sub Joystick1_ButtonDown (Button As Integer)
    Call JoystickCheck
End Sub

Sub Joystick1_ButtonUp (Button As Integer)
    Call JoystickCheck
End Sub

Sub JoystickCheck ()
    Dim Up As String
    Dim Down As String

    If Not Joystick1.Button1 Then
        Up = Up + "1"
    Else
        Down = Down + "1"
    End If

    If Joystick1.Buttons >= 2 Then
        If Not Joystick1.Button2 Then
            Up = Up + "2"
        Else
            Down = Down + "2"
        End If
    End If

    If Joystick1.Buttons >= 3 Then
        If Not Joystick1.Button3 Then
            Up = Up + "3"
        Else
            Down = Down + "3"
        End If
    End If

    If Joystick1.Buttons >= 4 Then
         If Not Joystick1.Button4 Then
            Up = Up + "4"
        Else
            Down = Down + "4"
        End If
    End If

    Label1.Caption = "Up: " & Up
    Label2.Caption = "Down: " & Down
End Sub


Information Properties Example

In this example, the program will show the informational properties.  To try this example, paste the code into the Declarations section of a form that contains seven labels, and a JoyStk control.  Make sure that the Port property of the JoyStk control is set properly.  Press F5. You'll see the settings of all of the informational properties.

Sub Form_Load ()
    Joystick1.Enabled = True

    Label1.Caption = "Buttons: " & Joystick1.Buttons
    Label2.Caption = "Devices: " & Joystick1.Devices
    Label3.Caption = "Manufacturer: " & Joystick1.Manufacturer
    Label4.Caption = "PeriodMin: " & Joystick1.PeriodMin
    Label5.Caption = "PeriodMax: " & Joystick1.PeriodMax
    Label6.Caption = "Product: " & Joystick1.Product
    Label7.Caption = "ProductName: " & Joystick1.ProductName

    Joystick1.Enabled = False
End Sub


Period Property Example

In this example, the program will show the effects of different settings for the Period property.  To try this example, paste the code into the Declarations section of a form that contains a horizontal scroll bar, two labels, and a JoyStk control.  Press F5.  Play with the horizontal scroll bar, then try the joystick, then the scroll bar again, etc.

Sub Form_Load ()
    Joystick1.Enabled = True

    HScroll1.Min = Joystick1.PeriodMin
    HScroll1.Max = Joystick1.PeriodMax
    HScroll1.Value = (Joystick1.PeriodMax + Joystick1.PeriodMin) / 2

    Call HScroll1_Change
End Sub

Sub Form_Unload (Cancel As Integer)
    Joystick1.Enabled = False
End Sub

Sub HScroll1_Change ()
    Label1.Caption = "Period: " & HScroll1.Value & " milliseconds"

    ' need to disable the joystick while doing this
    Joystick1.Enabled = False
    Joystick1.Period = HScroll1.Value
    Joystick1.Enabled = True
End Sub

Sub HScroll1_Scroll ()
    Call HScroll1_Change
End Sub

Sub Joystick1_Move (X As Integer, Y As Integer, Z As Integer)
    Label2.Caption = "Position: " & X & "," & Y
End Sub


Positional Properties Example

In this example, the program will show the changes in the position of the joystick when run.  It will also show the relative amount (as compared to XMin, XMax, YMin, and YMax).  To try this example, paste the code into the Declarations section of a form that contains two labels and a JoyStk control.  Press F5.  Then, play with the joystick.

Sub Form_Load ()
    Joystick1.Enabled = True
End Sub

Sub Form_Unload (Cancel As Integer)
    Joystick1.Enabled = False
End Sub

Sub Joystick1_Move (X As Integer, Y As Integer, Z As Integer)
    Dim XP As Integer
    Dim YP As Integer

    Label1.Caption = "Position: " & X & "," & Y

    XP = (100 * (X - Joystick1.XMin)) / (Joystick1.XMax - Joystick1.XMin)
    YP = (100 * (Y - Joystick1.YMin)) / (Joystick1.YMax - Joystick1.YMin)
    Label2.Caption = "Relative: X " & XP & "%  Y " & YP & "%"
End Sub


Threshold Property Example

In this example, the program will show the effects of different settings for the Threshold property.  To try this example, paste the code into the Declarations section of a form that contains a horizontal scroll bar, two labels, and a JoyStk control.  Press F5.  Play with the horizontal scroll bar, then try the joystick, then the scroll bar again, etc.

Sub Form_Load ()
    Joystick1.Enabled = True

    HScroll1.Min = 1
    HScroll1.Max = 32000
    HScroll1.Value = 100

    Call HScroll1_Change
End Sub

Sub Form_Unload (Cancel As Integer)
    Joystick1.Enabled = False
End Sub

Sub HScroll1_Change ()
    Label1.Caption = "Threshold: " & HScroll1.Value & " units"

    ' need to disable the joystick while doing this
    Joystick1.Enabled = False
    Joystick1.Threshold = HScroll1.Value
    Joystick1.Enabled = True
End Sub

Sub HScroll1_Scroll ()
    Call HScroll1_Change
End Sub

Sub Joystick1_Move (X As Integer, Y As Integer, Z As Integer)
    Label2.Caption = "Position: " & X & "," & Y
End Sub


Button1 Property See Also
See Also

ButtonDown Event

ButtonUp Event

Buttons Property

Period Property


ButtonDown Event See Also
See Also

Button1 Property

Button2 Property

Button3 Property

Button4 Property

Buttons Property

ButtonUp Event


Buttons Property See Also
See Also

Button1 Property

Button2 Property

Button3 Property

Button4 Property

ButtonDown Event

ButtonUp Event

Devices Property

Manufacturer Property

PeriodMax Property

PeriodMin Property

Port Property

Product Property

ProductName Property


ButtonUp Event See Also
See Also

Button1 Property

Button2 Property

Button3 Property

Button4 Property

ButtonDown Event

Buttons Property


Devices Property See Also
See Also

Buttons Property

Manufacturer Property

PeriodMax Property

PeriodMin Property

Port Property

Product Property

ProductName Property


Manufacturer Property See Also
See Also

Buttons Property

Devices Property

PeriodMax Property

PeriodMin Property

Port Property

Product Property

ProductName Property


Move Event See Also
See Also

Period Property

Threshold Property

XPos Property

YPos Property

ZPos Property


Period Property See Also
See Also

PeriodMax Property

PeriodMin Property


PeriodMax Property See Also
See Also

Buttons Property

Devices Property

Manufacturer Property

Port Property

Product Property

ProductName Property


Port Property See Also
See Also

Period Property


Product Property See Also
See Also

Buttons Property

Devices Property

Manufacturer Property

PeriodMax Property

PeriodMin Property

ProductName Property


ProductName Property See Also
See Also

Buttons Property

Devices Property

Manufacturer Property

PeriodMax Property

PeriodMin Property

Product Property


Threshold Property See Also
See Also

Move Event

Period Property

Port Property


XMax Property See Also
See Also

Period Property

Port Property

XPos Property

YPos Property

ZPos Property


XPos Property See Also
See Also

Move Event

Period Property

Port Property

XMax Property

XMin Property

YMax Property

YMin Property

ZMax Property

ZMin Property


Button1, Button2, Button3 and Button4 Properties

See Also            Button Event Example            Frequently Asked Questions

Description

Returns the current state of the joystick's buttons.

Syntax

object.Button1
object.Button2
object.Button3
object.Button4

The syntax of the Button1, Button2, Button3 and Button4 properties has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

These properties tell you which button(s) were pressed at the last time the joystick was polled (see the Period property).  They are read-only at run-time only.  They are only valid after the joystick has been enabled.

Data Type

Integer (boolean)


ButtonDown Event

See Also            Button Event Example            Frequently Asked Questions

Description

Occurs when the user pushes on one or more of the joystick's buttons.

Syntax

Sub object_ButtonDown([index As Integer,] button As Integer)

The syntax of the ButtonDown event has these parts:

Part	   	Description

object	A JoyStk control.

index	An integer that identifies a control if it's in a control array.

button	An integer the specifies the button pressed.

Remarks

This event only occurs when a button is pressed.  The joystick must be enabled for this event to happen.

button represents the button pressed.


Buttons Property

See Also            Information Properties Example            Frequently Asked Questions

Description

Returns the number of buttons on the joystick.

Syntax

object.Buttons

The syntax of the Buttons property has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

This property returns the number of buttons on the joystick.

This property is read-only at run-time only. It is only valid after the joystick has been enabled.

Data Type

Integer


ButtonUp Event

See Also            Button Event Example            Frequently Asked Questions

Description

Occurs when the user releases one or more of the joystick's buttons.

Syntax

Sub object_ButtonUp([index As Integer,] button As Integer)

The syntax of the ButtonUp event has these parts:

Part	   	Description

object	A JoyStk control.

index	An integer that identifies a control if it's in a control array.

button	An integer that specifies the joystick button released.

Remarks

This event only occurs when a button is released.  The joystick must be enabled for this event to happen.

button represents the button pressed.


Devices Property

See Also            Information Properties Example            Button Event Example            Frequently Asked Questions

Description

Returns the number of joysticks supported by the current driver.

Syntax

object.Devices

The syntax of the Devices property has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

This property tells you how many joysticks are supported in the system.

This property is read-only at run-time only. It is only valid after the joystick has been enabled.

Data Type

Integer


Manufacturer Property

See Also            Information Properties Example            Frequently Asked Questions

Description

Returns the manufacturer's ID of the joystick.

Syntax

object.Manufacturer

The syntax of the Manufacturer property has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

This represents the manufacturer of the driver.  The values returned are:

Value	   	Description

1	Microsoft

This property is read-only at run-time only.  It is only valid after the joystick has been enabled.

Data Type

Integer


Move Event

See Also            Period Property Example            Threshold Property Example            Positional Properties Example            Frequently Asked Questions

Description

Occurs when the user moves the joystick.

Syntax

Sub object_Move([index As Integer,] X As Long, Y As Long, Z As Long)

The syntax of the Move event has these parts:

Part	   	Description

object	A JoyStk control.

index	An integer that identifies a control if it's in a control array.

X	A long integer that specifies the joystick's new X position.

Y	A long integer that specifies the joystick's new Y position.

Z	A long integer that specifies the joystick's new Z position.

Remarks

This event occurs when the joystick's position changes.  The change must be larger than the current setting of the Threshold property.  The joystick must be enabled for this event to happen.

X, Y, and Z represent the joystick's new position (Z is only valid for 3-D joysticks).


Period Property

See Also            Period Property Example            Frequently Asked Questions

Description

Sets the polling interval for the joystick.

Syntax

object.Period [= integer ]

The syntax of the Period property has these parts:

Part	   	Description

object	A JoyStk control.

integer	An integer that specifies the polling rate of the joystick driver, in milliseconds.

Remarks

This property determines the polling rate (in milliseconds) of the joystick.

When changing this property at run-time, the control should be disabled prior to changing it, then re-enabled afterwards

Data Type

Integer


PeriodMax and PeriodMin Properties

See Also            Information Properties Example            Period Property Example            Frequently Asked Questions

Description

Returns the minimum and maximum times between polling that this joystick supports.

Syntax

object.PeriodMax
object.PeriodMin

The syntax of the PeriodMax and PeriodMin properties has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

These properties specify the minimum and maximum times between polling that the joystick driver supports (see the Period).

This property is read-only at run-time only.  It is only valid after the joystick has been enabled.

Data Type

Integer


Port Property

See Also            Frequently Asked Questions

Description

Determines which joystick port to use.

Syntax

object.Port [= integer ]

The syntax of the Port property has these parts:

Part	   	Description

object	A JoyStk control.

integer	An integer that determines the joystick port to use.

Remarks

This property determines which joystick to use.  The allowable values are:

Value	   	Description

1	Joystick 1, 3-D joystick, or 4-button joystick

2	Joystick 2

This property must be set at design-time.

Data Type

Integer


Product Property

See Also            Information Properties Example            Frequently Asked Questions

Description

Returns the product ID fo the joystick driver.

Syntax

object.Product

The syntax of the Product property has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

This represents the product ID of the driver.  The values returned are:

Value	   	Description

1	Microsoft MIDI Mapper

2	Microsoft Wave Mapper

3	Sound Blaster MIDI output port

4	Sound Blaster MIDI input port

5	Sound Blaster internal synthesizer

6	Sound Blaster waveform output port

7	Sound Blaster waveform input port

9	AdLib-compatible synthesizer

10	MPU401 MIDI output port

11	MPU401 MIDI input port

12	IBM Game Control Adapter

This property is read-only at run-time only.  It is only valid after the joystick has been enabled.

Data Type

Integer


ProductName Property

See Also            Information Properties Example            Frequently Asked Questions

Description

Returns the product name of the joystick driver.

Syntax

object.ProductName

The syntax of the ProductName property has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

This property specifies the product name of the joystick driver.

This property is read-only at run-time only.  It is only valid after the joystick has been enabled.

Data Type

String


Threshold Property

See Also            Threshold Property Example            Frequently Asked Questions

Description

Determines the amount the joystick must move for an event to be fired.

Syntax

object.Threshold [= threshold ]

The syntax of the Threshold property has these parts:

Part	   	Description

object	A JoyStk control.

threshold	An integer that species the distance the joystick must move before JoyStk will fire a Move event.

Remarks

This property determines the amount the joystick must move for a Move event to be fired.

When changing this property at run-time, the control should be disabled prior to changing it, then re-enabled afterwards.

Data Type

Integer


Version Property

Frequently Asked Questions

Description

Shows the version of the control.

Syntax

object.Version

The syntax of the Version property has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

This property holds the current version of the control.  It is read-only and available at both design-time and run-time.

Data Type

String


XMax, XMin, YMax, YMin, ZMax and ZMin Properties

See Also            Positional Properties Example            Frequently Asked Questions

Description

Returns the full range of the joystick's position.

Syntax

object.XMax
object.XMin
object.YMax
object.YMin
object.ZMax
object.ZMin

The syntax of the XMax, XMin, YMax, YMin, ZMax and ZMin properties has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

These properties tell you the full range of the joystick's position.  They are read-only at run-time only.  They are only valid after the joystick has been enabled.

Data Type

Integer (long)


XPos, YPos and ZPos Properties

See Also            Positional Properties Example            Frequently Asked Questions

Description

Returns the current position of the joystick.

Syntax

object.XPos
object.YPos
object.ZPos

The syntax of the XPos, YPos and ZPos properties has these parts:

Part	   	Description

object	A JoyStk control.

Remarks

These properties tell you where the joystick was at the last time it was polled (see the Period property).  They are read-only at run-time only.  They are only valid after the joystick has been enabled.

Data Type

Integer (long)


Getting Custom Controls Written

If you or your organization would like to have custom controls written, you can contact us at the following:

Mabry Software, Inc.

Post Office Box 31926

Seattle, WA  98103-1926

Phone: 206-634-1443

Fax: 206-632-0272 or 206-364-3196

Internet: mabry@mabry.com

You can also contact Zane Thomas.  He can be reached at:

Zane Thomas

Post Office Box 121

Indianola, WA  98342

Internet: zane@mabry.com


Licensing Information

Legalese Version

Mabry Software grants a license to use the enclosed software to the original purchaser.  Copies may be made for back-up purposes only.  Copies made for any other purpose are expressly prohibited, and adherence to this requirement is the sole responsibility of the purchaser.

Customer written executable applications containing embedded Mabry products may be freely distributed, without royalty payments to Mabry Software, provided that such distributed Mabry product is bound into these applications in such a way so as to prohibit separate use in design mode, and that such Mabry product is distributed only in conjunction with the customers own software product.  The Mabry Software product may not be distributed by itself in any form.

Neither source code for Mabry Software products nor modified source code for Mabry Software products may be distributed under any circumstances, nor may you distribute .OBJ, .LIB, etc. files that contain our routines. This control may be used as a constituent control only if the compound control thus created is distributed with and as an integral part of an application.  Permission to use this control as a constituent control does not grant a right to distribute the license (LIC) file or any other file other than the control executable itself. This license may be transferred to a third party only if all existing copies of the software and its documentation are also transferred.

This product is licensed for use by only one developer at a time.  Mabry Software expressly prohibits installing this product on more than one computer if there is any chance that both copies will be used simultaneously.  This restriction also extends to installation on a network server, if more than one workstation will be accessing the product.  All developers working on a project which includes a Mabry Software product, even though not working directly with the Mabry product, are required to purchase a license for that Mabry product.

This software is provided as is.  Mabry Software makes no warranty, expressed or implied, with regard to the software.  All implied warranties, including the warranties of merchantability and fitness for a particular use, are hereby excluded.

MABRY SOFTWARE'S LIABILITY IS LIMITED TO THE PURCHASE PRICE.  Under no circumstances shall Mabry Software or the authors of this product be liable for any incidental or consequential damages, nor for any damages in excess of the original purchase price.

To be eligible for free technical support by telephone, the Internet, CompuServe, etc. and to ensure that you are notified of any future updates, please complete the enclosed registration card and return it to Mabry Software.

English Version

We require that you purchase one copy of a control per developer on a project.  If this is met, you may distribute the control with your application royalty free.  You may never distribute the LIC file.  You may not change the product in any way that removes or changes the requirement of a license file.

We encourage the use of our controls as constituent controls when the compound controls you create are an integral part of your application.  But we don't allow distribution of our controls as constituents of other controls when the compound control is not part of an application.  The reason we need to have this restriction is that without it someone might decide to use our control as a constituent, add some trivial (or even non-trivial) enhancements and then sell the compound control.  Obviously there would be little difference between that and just plain reselling our control.

If you have purchased the source code, you may not re-distribute the source code either (nor may you copy it into your own project).  Mabry Software retains the copyright to the source code.

Your license is transferable.  The original purchaser of the product must make the transfer request.  Contact us for further information.

The sample versions of our products are intended for evaluation purposes only.  You may not use the sample version to develop completed applications.